import { createRouter, createWebHistory, createWebHashHistory } from 'vue-router'
import routes from "./routes"

import App from '../App.vue'
import { createApp } from 'vue'
// 创建app实例
const app = createApp(App)

// 路由守卫需要使用state数据 所以必须先引入pinia插件 
// main.js无法实现先引入（import都是同时进行）
// 引入pinia进行状态管理、同时pinia数据持久化
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
const pinia = createPinia()
pinia.use(piniaPluginPersistedstate)
app.use(pinia)


const router = createRouter({
  // history: createWebHistory(import.meta.env.BASE_URL),
  history: createWebHashHistory(),
  routes: routes,

})

// 加载user模块 以及底下变量
import { storeToRefs } from 'pinia'
import useStore from '@/store'
const { user } = useStore()
let { isLogin } = storeToRefs(user)

// 前置守卫
router.beforeEach((to, from) => {
  // console.log('是否登录', isLogin.value);
  if (
    // 检查用户是否已登录
    !isLogin.value &&
    // ❗️ 避免无限重定向
    to.name !== 'Login'
  ) {

    showMessage('warning', '请登录')

    // 将用户重定向到登录页面
    return { name: 'Login' }

  }

  if (to.hash) {
    const element = document.querySelector(to.hash);
    if (element) {
      element.scrollIntoView({ behavior: 'smooth' });
    }
    to.query.eid = 10
  }

  if (from.name == 'Examdetail') {
    to.meta.fromName = 'Examdetail'

  }
  // 返回 false 以取消导航
  // return false
})

// 信息提示
const showMessage = (msgtype, msgstr) => {
  ElMessage({
    showClose: true,
    message: msgstr,
    type: msgtype
  })
}

export default router
